How To Design Highly Available Architecture